package seatiger.tomcat.catalina;

import javax.servlet.ServletInputStream;
import javax.servlet.ServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;

@Deprecated
public interface Request {
    Socket getSocket();
    void setSocket(Socket socket);
    InputStream getStream();
    void setStream(InputStream stream);
    void setContentLength(int length);
    void setProtocol(String protocol);
    void setServerPort(int port);

    /**
     * 返回的是这个实现对象的门面模式
     * @return
     */
    ServletRequest getRequest();
    ServletInputStream createInputStream() throws IOException;
    void setAuthorization(String authorization);
    String getAuthorization();
    void setContentType(String type);

    /**
     * 关联一个连接器对象
     * @param connector
     */
    void setConnector(Connector connector);
    Connector getConnector();

    void setServerName(String name);

    /**
     * 获取Response对象
     * @return
     */
    Response getResponse();

    /**
     * 设置Response对象
     * @param response
     */
    void setResponse(Response response);

    /**
     * 获取关联的Context对象
     * @return
     */
    Context getContext();

    /**
     * 设置关联的Context对象
     * @param context
     */
    void setContext(Context context);

    /**
     * 重置
     */
    void recycle();

    /**
     * 将请求流 中的 数据读干净
     * @throws IOException
     */
    void finishRequest() throws IOException;

    /**
     * 为这次关联的请求 设置协议 通常 就是 http,https,ftp
     * @param scheme
     */
    void setScheme(String scheme);

}
